package rpc.remote.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @ClassName: RpcRequest
 * @Description: rpc请求类实体，包含要调用目标方法和类的名词、参数等
 * @author: Kowk
 * @since:1.0.0
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class RpcRequest implements Serializable {
    //序列化版本，在传输的过程中比较是否是一致的版本
    private static final long serialVersionUID = 1905122041950251207L;
    //系统会返回一个唯一识别码RequestId给用户，根据RequestId可以快速的排查问题
    private String requestId;
    private String interfaceName;
    private String methodName;
    private Object[] parameters;
    private Class<?>[] paramTypes;
    //服务版本，后续升级
    private String version;
    //当一个接口有多个类需要进行区分
    private String group;

    public String getRpcServiceName(){
        return this.getInterfaceName()+this.getGroup()+this.getVersion();
    }
}
